package com.hs.framework.utils;

/**
 * 温湿度传感器的校验工具类
 */
public class CRC16Util {

    private static final int POLY = 0xA001;
    public static String calculateCRC16(byte[] data) {
        int crc = 0xFFFF; // CRC初始值
        for (byte b : data) {
            crc ^= b & 0xFF; // 与当前字节异或
            for (int i = 0; i < 8; i++) {
                // 检查CRC的最低位
                if ((crc & 1) == 1) {
                    crc = (crc >> 1) ^ POLY; // 右移1位并与多项式异或
                } else {
                    crc >>= 1; // 右移1位
                }
            }
        }

        int h=crc&0xFF;
        int l=crc>>8&0xFF;
        return String.format("%02X%02X",h,l);
    }


}